Terraformで始めるAkamai Cloud Computing

目次

Akamai Cloud Computing(以下、Akamaiクラウド)では、無料枠として$100のクレジットをもらえる。
https://www.akamai.com/ja/create-account

仕事で触れることがあまりないので遊んでみる&お掃除が簡単なようにTerraform管理するまでのメモ(環境はMacを想定)

linode-cliをインストールする

毎回WebUIを見に行くのは面倒なのでAkamaiクラウドのCLIであるlinode-cliをインストールする。
https://techdocs.akamai.com/cloud-computing/docs/install-and-configure-the-cli#install-the-cli

セットアップ

linode-cliを初回に実行すると、ブラウザ認証される。

$ linode-cli
Welcome to the Linode CLI.  This will walk you through some initial setup.
The CLI will use its web-based authentication to log you in.
If you prefer to supply a Personal Access Token,use `linode-cli configure --token`.
Press enter to continue. This will open a browser and proceed with authentication.
A browser should open directing you to this URL to authenticate:

https://login.linode.com/oauth/authorize?client_id=xxxxxxxxxxx&response_type=token&scopes=*&redirect_uri=http://xxxxxxxxxx

If you are not automatically directed there, please copy/paste the link into your browser
to continue..

いくつかデフォルトリージョンなどの設定を完了すると、トークンとともに~/.config/linode-cliに永続化される。
WebUIからはAPI TokensLinode CLI @ {hostname}というPersonal Access Token (PAT) が追加されたことを確認できる。

このPATは、有効期限がNeverでありすべてのリソースにRead/Writeが許可されているので不安があればリソースを絞るなどするとよい。

Terraformで管理する

AkamaiクラウドのリソースをTerraformで管理する。
https://registry.terraform.io/providers/linode/linode/latest

セットアップ

PAT発行

APIアクセスするためのPATをlinode-cliで作成する。

# https://techdocs.akamai.com/linode-api/reference/post-personal-access-token
$ linode-cli profile token-create \
  --scopes '*' \
  --expiry '2025-01-01T00:00:00' \
  --label terraform

ここでは--scopes '*'を指定しており、すべてのリソースのRead/Writeを許可している。

もちろんトークンもTerraform管理することが可能。
https://registry.terraform.io/providers/linode/linode/latest/docs/resources/token

Provider設定

Terraform providerをドキュメントに従って設定する。

# .tf
terraform {
  required_providers {
    linode = {
      source  = "linode/linode"
      version = "2.30.0" # バージョンは最新に読み替える
    }
  }
}

provider "linode" {
  token = var.token
}
# variables.tf
variable "token" {}

トークンの渡し方はexport LINODE_TOKEN=mytokenでもよい。 https://registry.terraform.io/providers/linode/linode/latest/docs#post-personal-access-token

動作確認

作業ディレクトリの初期化とplanの動作確認を行い、No changes.であることを確認する。

$ terraform init
$ terraform plan -var "token=発行したPAT" # -varは以降の例では省略

リソースを作成する

試しにObject Storageを作成する。

# storage.tf
# https://registry.terraform.io/providers/linode/linode/latest/docs/resources/object_storage_bucket
resource "linode_object_storage_bucket" "mybucket" {
  region  = "jp-osa-1"
  label   = "mybucket-24164" # 適当な名前
}
$ terraform apply

Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
  + create

Terraform will perform the following actions:

  # linode_object_storage_bucket.mybucket will be created
  + resource "linode_object_storage_bucket" "mybucket" {
      + acl          = "private"
      + cluster      = (known after apply)
      + cors_enabled = true
      + endpoint     = (known after apply)
      + hostname     = (known after apply)
      + id           = (known after apply)
      + label        = "mybucket-24164"
      + region       = "jp-osa-1"
      + versioning   = (known after apply)
    }

Plan: 1 to add, 0 to change, 0 to destroy.

Do you want to perform these actions?
  Terraform will perform the actions described above.
  Only 'yes' will be accepted to approve.

  Enter a value: yes

linode_object_storage_bucket.mybucket: Creating...
linode_object_storage_bucket.mybucket: Still creating... [10s elapsed]
linode_object_storage_bucket.mybucket: Creation complete after 11s [id=jp-osa:mybucket-24164]

Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
$

linode-cliで確認。

$ linode-cli obj ls
2024-10-29 15:33  mybucket-24164
$

できた。

お掃除

最後に作ったリソースを消しておく。

# 対象を指定したい場合は `-target=linode_object_storage_bucket.mybucket`
$ terraform destroy

Terraformで管理できる安心は何ものにも代えがたい。 料金も

で安価なので$100もあれば色々遊べそう。

← Posts